import { ElMessage, ElMessageBox, ElNotification, ElLoading } from 'element-plus'

let loadingInstance

const used = {
  //处理分页参数
  queryParams: (params) => {
    let arr = ['page', 'limit'];//不需要处理的参数
    let newParams = {
      page: params['page'] || 1,
      limit: params['limit'] || 10,
    };
    let endArr = Object.keys(params).filter((key) => !arr.includes(key) && !used.isEmpty(params[key]) && !key.endsWith('_operator'));//需要处理的参数
    //处理参数
    endArr.forEach((key, index) => {
      //处理时间区间 后面的时间设置当天的最后时间
      if (key == 'create_time' && params[key].includes(',')) {
        let arr = params[key].split(',');
        params[key] = arr[0] + ',' + (Number(arr[1]) + 60 * 60 * 24);
      }
      //排序单独处理
      if (key == 'order') {
        newParams[key] = params[key].replace('ending', '');
      } else {
        newParams['search[' + index + '][field]'] = key;
        newParams['search[' + index + '][val]'] = params[key];
        newParams['search[' + index + '][operator]'] = params[key + '_operator']
      }

    })
    return newParams
  },
  //是否为空
  isEmpty: (value) => {
    if (value === undefined || value === null || value === '') {
      return true
    } else {
      return false
    }
  },
  // 深度克隆 - uview拿来的
  deepClone(obj) {
    // 对常见的“非”值，直接返回原来值
    if ([null, undefined, NaN, false].includes(obj)) return obj;
    if (typeof obj !== "object" && typeof obj !== 'function') {
      //原始类型直接返回
      return obj;
    }
    var o = Object.prototype.toString.call(obj) === '[object Array]' ? [] : {};
    for (let i in obj) {
      if (obj.hasOwnProperty(i)) {
        o[i] = typeof obj[i] === "object" ? used.deepClone(obj[i]) : obj[i];
      }
    }
    return o;
  },
  //判断是否是图片
  isImageType(str, arr = ['png', 'jpg', 'jpeg', 'bmp', 'gif', 'webp', 'psd', 'svg', 'tiff']) {
    let strEnd = str.substr(str.lastIndexOf('.') + 1)
    return arr.indexOf(strEnd.toLowerCase()) !== -1
  },
  //判断是否是视频
  isVideoType(str, arr = ['video']) {
    let strEnd = str.substr(str.lastIndexOf('.') + 1)
    return arr.indexOf(strEnd.toLowerCase()) !== -1
  },
  //判断是否是安卓安装包
  isApkType(str, arr = ['apk']) {
    let strEnd = str.substr(str.lastIndexOf('.') + 1)
    return arr.indexOf(strEnd.toLowerCase()) !== -1
  },
  //返回格式
  backType(str) {
    let strEnd = str.substr(str.lastIndexOf('.') + 1)
    return strEnd
  },
  //返回名称
  backName(str) {
    return str.split('.')[1]
  },
  //返回名称
  backAllName(str) {
    return str.split('.')[1] + '.' + str.substr(str.lastIndexOf('.') + 1)
  },
  // 消息提示
  msg(content) {
    ElMessage.info(content)
  },
  // 错误消息
  msgError(content) {
    ElMessage.error(content)
  },
  // 成功消息
  msgSuccess(content) {
    ElMessage.success(content)
  },
  // 警告消息
  msgWarning(content) {
    ElMessage.warning(content)
  },
  // 弹出提示
  alert(content) {
    ElMessageBox.alert(content, "系统提示")
  },
  // 错误提示
  alertError(content) {
    ElMessageBox.alert(content, "系统提示", { type: 'error' })
  },
  // 成功提示
  alertSuccess(content) {
    ElMessageBox.alert(content, "系统提示", { type: 'success' })
  },
  // 警告提示
  alertWarning(content) {
    ElMessageBox.alert(content, "系统提示", { type: 'warning' })
  },
  // 通知提示
  notify(content) {
    ElNotification.info(content)
  },
  // 错误通知
  notifyError(content) {
    ElNotification.error(content)
  },
  // 成功通知
  notifySuccess(content) {
    ElNotification.success(content)
  },
  // 警告通知
  notifyWarning(content) {
    ElNotification.warning(content)
  },
  // 确认窗体
  confirm(content) {
    return ElMessageBox.confirm(content, "系统提示", {
      confirmButtonText: '确定',
      cancelButtonText: '取消',
      type: "warning",
    })
  },
  // 提交内容
  prompt(content) {
    return ElMessageBox.prompt(content, "系统提示", {
      confirmButtonText: '确定',
      cancelButtonText: '取消',
      type: "warning",
    })
  },
  // 打开遮罩层
  loading(content) {
    loadingInstance = ElLoading.service({
      lock: true,
      text: content,
      background: "rgba(0, 0, 0, 0.7)",
    })
  },
  // 关闭遮罩层
  closeLoading() {
    loadingInstance.close()
  },
  //数组去重 - 一维数组
  uniqueArray(arr) {
    return arr.filter((item, index) => arr.indexOf(item) === index);
  },

  // 匹配协议和域名部分并移除
  removeDomainFromUrl(url) {
    return url.replace(/^https?:\/\/[^\/]+/, '');
  },
  //获取图片尺寸
  getImageSize(file) {
    return new Promise((resolve, reject) => {
      const img = new Image();
      img.src = URL.createObjectURL(file);
      img.onload = () => {
        resolve({ width: img.width, height: img.height });
      }
    });
  }
}
export default used;